// 路由前置守卫
// 进行登录拦截的控制 (后面自己写)
import router from '@/router'
import store from '@/store'
import NProgress from 'nprogress' // 引入一份进度条插件
import 'nprogress/nprogress.css' // 引入进度条样式

const whiteList = ['/login', '/404'] // 定义白名单  所有不受权限控制的页面

// 导航前置守卫
router.beforeEach(async(to, from, next) => {
  NProgress.start()// 进度条加载
  const token = store.getters.token
  // 判断有无token
  if (token) {
    // 判断是不是去登录页
    if (to.path === '/login') {
      next('/') // 跳到首页, 被next拦截走的, 不会自动关闭, 因为没有进入到 afterEach, 需要手动关闭
      NProgress.done()// 进度条结束
    } else {
      const userInfo = store.state.user.userInfo
      if (Object.keys(userInfo).length <= 0) {
        // 异步过程
        // const res = await store.dispatch('user/getUserInfo')
        // console.log(res)
        await store.dispatch('user/getUserInfo')
      }
      next() // 放行
    }
  } else {
    // 看在不在白名单中(免登陆即可访问的页面)
    if (whiteList.includes(to.path)) {
      next()
    } else {
      next({ path: '/login' })// 前之守卫再进行定向的时候不会执行后置守卫
      NProgress.done()// 进度条结束
    }
  }
})

router.afterEach((to, from) => {
  NProgress.done()// 进度条结束
})
